home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / MISC / HCAL-27 / 555TIMER.BAS (.txt) next >
Encoding:
GW-BASIC  |  1997-01-27  |  5.7 KB  |  188 lines

  1. 10  '555TIMER - 19 JAN 91  rev. 27 SEP 96
  2. 20    'formulae from Radio Shack "Programs for Electronic Circuit Design"
  3. 30    'by David Leithauser, cat.#62-1054, pages 85-87
  4. 40  IF EX$=""THEN EX$="EXIT"
  5. 50  CLS:KEY OFF
  6. 60  COLOR 7,0,1
  7. 70  UL$=STRING$(80,205)
  8. 80  U$="######,###.###"
  9. 90  U1$="######,###.##"
  10. 100  U2$="######,###"
  11. 110  '
  12. 120  '.....start
  13. 130  CLS
  14. 140  C=0:C1=0:D=0:F=0:R=0:R1=0:R2=0
  15. 150  COLOR 15,2
  16. 160  PRINT " 555 TIMER CALCULATOR";TAB(57);"by George Murphy VE3ERP ";
  17. 170  COLOR 1,0:PRINT STRING$(80,223);
  18. 180  COLOR 7,0
  19. 190  PRINT " Press number in < > for:"
  20. 200  PRINT UL$;
  21. 210  PRINT "  < 1 >  ASTABLE application     (Free-Running Multivibrator)"
  22. 220  PRINT "  < 2 >  MONOSTABLE application  (One-shot Timer)"
  23. 230  PRINT UL$;
  24. 240  PRINT "  < 0 >  EXIT"
  25. 250  Z$=INKEY$
  26. 260  IF Z$="0"THEN CLS:RUN EX$
  27. 270  IF Z$="1"THEN 310
  28. 280  IF Z$="2"THEN 1040
  29. 290  GOTO 250
  30. 300  '
  31. 310  '.....Astable multivibrator
  32. 320  VIEW PRINT 3 TO 24:CLS:VIEW PRINT
  33. 330  TWO$="TRIG":SIX$="R2 -"
  34. 340  LOCATE 1:COLOR 15,2
  35. 350  PRINT " 555 TIMER AS AN ASTABLE FREE-RUNNING MULTIVIBRATOR"
  36. 360  COLOR 1,0:PRINT STRING$(80,223);
  37. 370  '
  38. 380  '.....inputs
  39. 390  GOSUB 1430
  40. 400  LOCATE 4
  41. 410  IF F THEN 430
  42. 420  INPUT " ENTER: Freq.in Hz.(0 if unknown)......";F:GOSUB 530
  43. 430  IF F AND C=0 THEN R2=1000
  44. 440  IF R1 THEN 460
  45. 450  CR1=1:GOSUB 1430:INPUT " ENTER: R1 in ohms (0 if unknown)....";R1:GOSUB 530
  46. 460  IF R2 THEN 480
  47. 470  CR2=1:GOSUB 1430:INPUT " ENTER: R2 in ohms (0 if unknown)....";R2:GOSUB 530
  48. 480  IF C THEN 390
  49. 490  CC=1:GOSUB 1430:INPUT " ENTER: C1 in >F.  (0 if unknown).....";C
  50. 500  C=C/10^6:GOSUB 530
  51. 510  GOTO 380
  52. 520  '
  53. 530  '.....calculate
  54. 540  IF R1*R2*C THEN F=1/0.693/((R1+2*R2)*C):GOTO 600
  55. 550  IF R1*R2*F THEN C=1/0.693/((R1+2*R2)*F):GOTO 600
  56. 560  IF C*F*R2 THEN R1=1/0.693/(C*F)-2*R2:GOTO 600
  57. 570  IF C*F*R1 THEN R2=1/0.693/2/(C*F)-R1/2:GOTO 600
  58. 580  RETURN
  59. 590  '
  60. 600  '.....display results
  61. 610  VIEW PRINT 3 TO 24:CLS:VIEW PRINT
  62. 620  CR1=1:CR2=1:CC=1
  63. 630  GOSUB 1430:LOCATE 3
  64. 640  PRINT " Frequency ........:";USING U2$;F;:PRINT "     Hz."
  65. 650  PRINT " R1 ...............:";USING U2$;R1;:PRINT "     -"
  66. 660  PRINT " R2 ...............:";USING U2$;R2;:PRINT "     -"
  67. 670  PRINT " C1 ...............:";USING U$;C*10^6;:PRINT " >F"
  68. 680  HT=0.693*(R1+R2)*C*10^3       'high time
  69. 690  LT=0.693*R2*C*10^3            'low time
  70. 700  PRINT " Pulse Cycle Time  :";USING U1$;LT+HT;:PRINT "  milliseconds"
  71. 710  PRINT " Output Low Time   :";USING U$;LT;:PRINT " milliseconds"
  72. 720  PRINT " Output High Time  :";USING U$;HT;:PRINT " milliseconds"
  73. 730  PRINT " Percent High Time :";USING U$;(HT/(HT+LT)*100);:PRINT " %"
  74. 740  COLOR 0,7
  75. 750  IF ABS(R1)<1000 THEN PRINT" R1 should be 1000 - or more !               "
  76. 760  IF ABS(R2)<1000 THEN PRINT" R2 should be 1000 - or more !               "
  77. 770  IF R1+R2>3.3E+06 THEN PRINT" Total of R1+R2 should be 3.3 meg- or less ! "
  78. 780  IF ABS(C)<0 THEN PRINT" C1 should be .0005 >F or more !             "
  79. 790  IF F>10^6 THEN PRINT  " Frequency should be 1.0 MHz or less !       "
  80. 800  IF R1<0 OR R1<0 OR C<0 THEN PRINT"* WARNING - IMPOSSIBLE COMPONENT VALUES *"
  81. 810  COLOR 7,0
  82. 820  LOCATE 16:PRINT " (NOTE: Calculated values have been rounded off)"
  83. 830  LOCATE 18
  84. 840  PRINT " Percent High Time is a function of the relationship of R1 to R2."
  85. 850  PRINT " Percent High Time must be greater than 50% and less than 100%."
  86. 860  PRINT
  87. 870  PRINT " Would you like to change the Percent High Time?     (y/n)"
  88. 880  Z$=INKEY$
  89. 890  IF Z$="n"THEN VIEW PRINT 18 TO 24:CLS:VIEW PRINT:GOSUB 1750:GOTO 1010
  90. 900  IF Z$="y"THEN 930
  91. 910  GOTO 880
  92. 920  PRINT UL$;
  93. 930  LOCATE CSRLIN-1:PRINT STRING$(79,32):LOCATE CSRLIN-1
  94. 940  INPUT " ENTER: Desired Percent High Time...........";PC
  95. 950  P=PC/100
  96. 960  Y=(2*P-1)/(1-P)        'ratio R1:R2
  97. 970  T=R1+2*R2              'constant
  98. 980  R2=T/(Y+2)             'new value of R2
  99. 990  R1=R2*Y
  100. 1000  F=0:GOTO 540
  101. 1010  GOTO 120
  102. 1020  '
  103. 1030  '.....monostable multivibrator
  104. 1040  VIEW PRINT 3 TO 24:CLS:VIEW PRINT
  105. 1050  TWO$="IN  ":SIX$="CALL"
  106. 1060  LOCATE 1:COLOR 15,2
  107. 1070  PRINT " 555 TIMER AS A ONE-SHOT TIMER"
  108. 1080  COLOR 1,0:PRINT STRING$(80,223);
  109. 1090  COLOR 7,0
  110. 1100  '
  111. 1110  '.....inputs
  112. 1120  GOSUB 1430:LOCATE 4:IF D THEN 1140
  113. 1130  INPUT " ENTER: Pulse in sec.(0 if unknown)";D:GOSUB 1210
  114. 1140  IF R THEN 1160
  115. 1150  CR1=1:GOSUB 1430:INPUT " ENTER: R1 in ohms...(0 if unknown)";R:GOSUB 1210
  116. 1160  IF C THEN 1120
  117. 1170  CC=1:GOSUB 1430:INPUT " ENTER: C1 in >F. ...(0 if unknown)";C
  118. 1180  C=C/10^6:GOSUB 1210
  119. 1190  GOTO 1110
  120. 1200  '
  121. 1210  '.....calculation
  122. 1220  IF D*C THEN R=D/(1.443*C):GOTO 1270      '1.443=1/.693
  123. 1230  IF D*R THEN C=D/(1.443*R):GOTO 1270
  124. 1240  IF R*C THEN D=1.443*R*C:GOTO 1270
  125. 1250  RETURN
  126. 1260  '
  127. 1270  '.....display results
  128. 1280  VIEW PRINT 3 TO 24:CLS
  129. 1290  CR1=1:CC=1
  130. 1300  GOSUB 1430:LOCATE 3
  131. 1310  PRINT " R1 ..............:";USING U2$;R;:PRINT "     -"
  132. 1320  PRINT " C1 ..............:";USING U$;C*10^6;:PRINT " >F"
  133. 1330  PRINT " Pulse duration ..:";USING U$;D;:PRINT " seconds"
  134. 1340  COLOR 0,7
  135. 1350  IF R>3.3E+06 THEN PRINT " R1 should be 3.3 megohms or less ! "
  136. 1360  IF ABS(R)<10^3 THEN PRINT  " R1 should be 1000 ohms or more !   "
  137. 1370  IF ABS(C)<0 THEN PRINT " C1 should be .0005 >F or more !    "
  138. 1380  COLOR 7,0
  139. 1390  LOCATE 16:PRINT " (NOTE: Calculated values have been rounded off)"
  140. 1400  GOSUB 1750
  141. 1410  GOTO 120   'start
  142. 1420  '
  143. 1430  '.....diagram
  144. 1440  VIEW PRINT 3 TO 24:CLS:VIEW PRINT
  145. 1450  COLOR 7,0
  146. 1460  LN=3           'line
  147. 1470  CN=52          'base column
  148. 1480  COLOR 0,7
  149. 1490  LOCATE LN+ 0,CN:PRINT "           +5v to +15v      "
  150. 1500  LOCATE LN+ 1,CN:PRINT "                CALL           "
  151. 1510  LOCATE LN+ 2,CN:PRINT "      VARPTRSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDCOLOR CALL           "
  152. 1520  LOCATE LN+ 3,CN:PRINT " GRND <0xB4!>1     8BLOADSOUND<0xB4!> V+        "
  153. 1530  LOCATE LN+ 4,CN:PRINT "      CALL       CALL R1 -        "
  154. 1540  LOCATE LN+ 5,CN:PRINT "      <0xB4!>2     7BLOADSOUND<0xB4!> Discharge "
  155. 1550  LOCATE LN+ 6,CN:PRINT "      CALL  555  CALL             "
  156. 1560  LOCATE LN+ 7,CN:PRINT " OUT  <0xB4!>3     6BLOADSOUND<0xB4!> Threshold "
  157. 1570  LOCATE LN+ 8,CN:PRINT "      CALL       CALL CALL           "
  158. 1580  LOCATE LN+ 9,CN:PRINT " V+   <0xB4!>4     5BLOAD CALL Control V "
  159. 1590  LOCATE LN+10,CN:PRINT "      CLSSOUNDSOUNDSOUNDSOUNDSOUNDSOUNDSOUND' CALL           "
  160. 1600  LOCATE LN+11,CN:PRINT "                C1 >F       "
  161. 1610  LOCATE LN+12,CN:PRINT "                CALL           "
  162. 1620  LOCATE LN+13,CN:PRINT "              \\MOTOR\\         "
  163. 1630  LOCATE LN+6,CN+16:PRINT SIX$
  164. 1640  COLOR 7,0
  165. 1650  LOCATE LN+14:PRINT UL$;
  166. 1660  '.....hi-lites
  167. 1670  IF CR1 THEN COLOR 7,0:LOCATE LN+4,CN+15:PRINT " R1 -"
  168. 1680  IF CR2 THEN COLOR 7,0:LOCATE LN+6,CN+15:PRINT " ";SIX$
  169. 1690  IF CC THEN COLOR  7,0:LOCATE LN+11,CN+15:PRINT " C1 >F"
  170. 1700  CR1=0:CR2=0:CC=0
  171. 1710  COLOR 7,0
  172. 1720  LOCATE CSRLIN-1
  173. 1730  RETURN
  174. 1740  '
  175. 1750  'HARDCOPY
  176. 1760  GOSUB 1870:LOCATE 25,2:COLOR 14,6
  177. 1770  PRINT " Press 1 to print screen, 2 to print screen & ";
  178. 1780  PRINT "advance paper, or 3 to continue.";:COLOR 7,0
  179. 1790  Z$=INKEY$:IF Z$="3"THEN GOSUB 1870:RETURN
  180. 1800  IF Z$="1"OR Z$="2"THEN GOSUB 1870:GOTO 1820
  181. 1810  GOTO 1790
  182. 1820  FOR QX=1 TO 24:FOR QY=1 TO 80
  183. 1830  LPRINT CHR$(SCREEN(QX,QY));
  184. 1840  NEXT QY:NEXT QX
  185. 1850  IF Z$="2"THEN LPRINT CHR$(12)
  186. 1860  GOTO 1760
  187. 1870  LOCATE 25,1:PRINT STRING$(80,32);:RETURN
  188.